package com.cskaoyan._19collection._06collection._02listdemo;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;

/**
 * @author Macro_Ray
 * @since 2024/4/1 21:13
 */
// List系列集合的常用方法
    /*
        void add(int index,E element)      在指定索引处(index)添加指定元素(element)
        E remove(int index)                删除指定索引处(index)的元素，返回被删除的元素
        E set(int index, E element)        修改指定索引处(index)的元素的值，返回被修改的元素
        E get(int index)                   返回指定索引处(index)的元素
    * */
public class ListApi {
    @Test
    public void addARemove() {

        // 1.创建对象
        List<String> list = new ArrayList<>();
        // 2.添加元素
        list.add("hello");
        list.add("world");
        list.add("java");

        // 指定位置添加元素
        // 在指定索引添加元素，原来的元素依次后移一个位置
        list.add(1, "c++");
        System.out.println(list);

        // 删除元素
        String remove = list.remove(0);
        System.out.println(remove);

        // 打印
        System.out.println(list);
    }


    // 删除的两种方式
    @Test
    public void Remove2() {
        // 创建对象
        List<Integer> list = new ArrayList<>();
        // 添加元素
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        // 删除元素
        // 在调用方法的时候如果方法出现重载，优先调用实参和形参类型一样的方法
        // 因此 remove(1)，这里1是指索引1
        Integer remove = list.remove(1);
        System.out.println(remove);
        // 如果想删除元素1，可以手动装箱：
        // 把基本数据类型1 变成Integer类型
        Integer i = Integer.valueOf(1);
        list.remove(i);
        System.out.println(list);
    }

    @Test
    public void setAGet() {
        // 创建对象
        List<String> list = new ArrayList<>();
        // 添加元素
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");

        // 修改
        list.set(0, "qqq");
        // 打印
        System.out.println(list);

        // 获取
        String s = list.get(2);
        System.out.println(s);
    }
}
